home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 4 / FM Towns Free Software Collection 4 - Disc 1.iso / pao / towns / cdplay / src / cdda.h < prev    next >
Text File  |  1991-10-18  |  9KB  |  228 lines

  1. /* << High C V1.4 >> **********************************************************
  2. **
  3. **    CD演奏ライブラリ用ヘッダ
  4. **
  5. **    1991.02.09 : CREATE
  6. **    1991.02.12 : FINISH
  7. **
  8. **    < HISTORY >
  9. **    1991.02.09 : CREATE
  10. **    1991.02.19 : SHUFFLE機能の追加.
  11. **    1991.02.27 : 全面改訂開始....
  12. **
  13. **    < note > : TABS = 4
  14. **
  15. **    All Rights Reserved, Copyright (C) Y.Hirata 1991.
  16. **
  17. **    Programmed by Y.Hirata ( Nifty ID : NAB03321 )
  18. **
  19. ******************************************************************************/
  20.  
  21. #undef    EX
  22. #ifdef _CDDA_LIB                        /*  ライブラリソース用                        */
  23.     #define    EX
  24.     char    CDDA_DEBUG = 0 ;            /*    ● DEBUG 用 ●    */
  25. #else                                    /*  ライブラリ使用側                    */
  26.     #define    EX        extern
  27.     EX char    CDDA_DEBUG ;                /*    ● DEBUG 用 ●    */
  28. #endif
  29.  
  30. #define    CDDA_MAX_TRACK        99            /*  CD-ROM 最大トラック数:99            */
  31. #define    CDDA_MIN_TRACK        1            /*  CD-ROM 最小トラック数:1                */
  32. #define    CDDA_ZERO            0
  33. #define    CDDA_TRUE            1            /*  真値                            */
  34. #define    CDDA_FALSE            0            /*  偽値                            */
  35. #define    CDDA_ERROR            -1            /*  エラー時のリターン値                    */
  36. #define    CDDA_NOERROR        CDDA_ZERO    /*  正常終了時のリターン値                */
  37. #define    CDDA_RETRY            5            /*  エラー発生時のリトライ回数                */
  38. #define    CDDA_MAX_REPEAT        255            /*  最大演奏リピート回数                */
  39. #define    CDDA_MIN_REPEAT        1            /*  最小演奏リピート回数                */
  40. #define    CDDA_FFREV_SEC        1            /*  先送り/後戻り時カウント値[秒]        */
  41.  
  42. /*
  43. **    乱数のマクロを使用する側で、stdio.h, stdlib.h, time.h を include して下さい!
  44. */
  45. #define    CDDA_RANDINIT        srand((unsigned int)clock())    /*  乱数初期化    */
  46. #define    CDDA_RANDOM(x)        (rand()%(x))                    /*  乱数 : 0~x    */
  47.  
  48.  
  49. /*    CDタイプ値の定義    */
  50.  
  51. #define    CDDA_TYPE_NO        0            /*  なし                            */
  52. #define    CDDA_TYPE_CDDA        1            /*  CD-DA                            */
  53. #define    CDDA_TYPE_DATA        2            /*  DATA                            */
  54. #define    CDDA_TYPE_BOTH        3            /*  CD-DA & DATA                    */
  55.  
  56.  
  57. /*    スイッチ値の定義    */
  58.  
  59. #define    CDDA_SW_EXIT        -1            /*  演奏終了                        */
  60. #define    CDDA_SW_EJECT        -1            /*  演奏終了                        */
  61. #define    CDDA_SW_STOP        0            /*  演奏停止                        */
  62. #define    CDDA_SW_PAUSE        0x100        /*  演奏一時停止                    */
  63. #define    CDDA_SW_TOCREAD        0x101        /*  TOC 読出し                        */
  64. #define    CDDA_SW_PLAY        0x102        /*  演奏開始                        */
  65. #define    CDDA_SW_SHUFFLE        0x104        /*  シャッフル演奏                        */
  66. #define    CDDA_SW_INIT        0x108        /*  初期処理                        */
  67. #define    CDDA_SW_STATUS        0x110        /*  CD演奏状態取得                    */
  68. #define    CDDA_SW_PROGRAM        0x200        /*  プログラム演奏                        */
  69. #define    CDDA_SW_CONTINUE    0x201        /*  連続再生                        */
  70. #define    CDDA_SW_SINGLE        0x202        /*  一曲演奏                        */
  71. #define    CDDA_SW_REPEAT        0x204        /*  リピート設定                        */
  72. #define    CDDA_SW_BREAK        0x400        /*  スイッチを放す                        */
  73. #define    CDDA_SW_FFMUSIC        0x401        /*  曲先送り(スイッチを放すまで)        */
  74. #define    CDDA_SW_REWMUSIC    0x402        /*  曲後戻り(スイッチを放すまで)        */
  75. #define    CDDA_SW_FFTIME        0x404        /*  時間先送り(スイッチを放すまで)        */
  76. #define    CDDA_SW_REWTIME        0x408        /*  時間後戻り(スイッチを放すまで)        */
  77. #define    CDDA_SW_PRG_CHECK    0x800        /*  プログラム演奏曲の確認                */
  78. #define    CDDA_SW_PRG_CLEAR    0x801        /*  プログラム演奏曲の削除                */
  79. #define    CDDA_SW_PRG_TOP        0x802        /*  プログラム演奏曲の位置ポインタクリア        */
  80.  
  81.  
  82. /*    ステータス値の定義    */
  83.  
  84. #define    CDDA_STAT_NOTREADY    -1            /*  NOT READY                        */
  85. #define    CDDA_STAT_STOP        0            /*  停止中                            */
  86. #define    CDDA_STAT_PLAY        1            /*  演奏中                            */
  87. #define    CDDA_STAT_PAUSE        2            /*  一時停止中                        */
  88.  
  89.  
  90. /*    エラー値の定義        */
  91.  
  92. #define    CDDA_ERR_NOERROR    CDDA_ZERO    /*  正常                            */
  93. #define    CDDA_ERR_NOTREADY    0x001        /*  CDがセットされていない                */
  94. #define    CDDA_ERR_PARAMETER    0x002        /*  パラメタエラー                        */
  95. #define    CDDA_ERR_NOTCONNECT    0x004        /*  ドライブが非接続                    */
  96. #define    CDDA_ERR_ABNORMAL    0x008        /*  コマンドが異常終了                    */
  97. #define    CDDA_ERR_MEDIA        0x010        /*  メディアエラー                        */
  98. #define    CDDA_ERR_HARD        0x020        /*  ハードエラー                            */
  99. #define    CDDA_ERR_PARITY        0x040        /*  パリティエラー                        */
  100. #define    CDDA_ERR_CHANGE        0x080        /*  メディア交換あり                    */
  101. #define    CDDA_ERR_DEVICENO    0x100        /*  指定デバイス番号誤り                */
  102. #define    CDDA_ERR_SECTOR        0x101        /*  セクタ長が違う                        */
  103. #define    CDDA_ERR_NOWPLAY    0x102        /*  音楽演奏中                        */
  104. #define    CDDA_ERR_NOWPAUSE    0x104        /*  音楽が一時停止中                */
  105. #define    CDDA_ERR_NOTPAUSE    0x108        /*  一時停止状態でない                */
  106. #define    CDDA_ERR_NOMUSIC    0x110        /*  音楽データがない                    */
  107. #define    CDDA_ERR_REPEAT        0x120        /*  リピート演奏を開始した                */
  108.  
  109.  
  110. /*---------------------------------------------------------------------------*/
  111. /*
  112. **    データ構造定義
  113. */
  114. /*---------------------------------------------------------------------------*/
  115. typedef struct {                        /*  CD-ROM 曲情報用                    */
  116.         char    min ;                            /*  分   ( 1min = 60sec )    */
  117.         char    sec ;                            /*  秒   ( 1sec = 75frame )    */
  118.         char    frame ;                            /*  フレーム                    */
  119. } CDDA_TRACK ;
  120.  
  121. typedef struct {                        /*  CD-ROM 情報                        */
  122.         int        drv ;                            /*  CDドライブ番号(0~6)        */
  123.         int        type ;                            /*  CDタイプ                    */
  124.         int        start ;                            /*  先頭トラック(曲)番号        */
  125.         int        end ;                            /*  最終トラック(曲)番号        */
  126.         CDDA_TRACK    track[CDDA_MAX_TRACK] ;        /*  各トラックの演奏開始時間    */
  127.         CDDA_TRACK    discend ;                    /*  ディスク内演奏終了時間        */
  128. } CDDA_INFO ;
  129.  
  130.  
  131. /*---------------------------------------------------------------------------*/
  132. /*
  133. **    グローバルデータ
  134. */
  135. /*---------------------------------------------------------------------------*/
  136. EX CDDA_INFO    CDDA_INFO_buf ;                        /*  CD情報格納用        */
  137.  
  138. EX CDDA_TRACK    CDDA_CLOCK_nowdisc ;    /*  演奏中のディスク内演奏時間            */
  139. EX CDDA_TRACK    CDDA_TIME_nowdisc ;        /*  演奏中のディスク内残り演奏時間        */
  140. EX CDDA_TRACK    CDDA_CLOCK_nowtrack ;    /*  演奏中のトラック内演奏時間            */
  141. EX CDDA_TRACK    CDDA_TIME_nowtrack ;    /*  演奏中のトラック内残り演奏時間        */
  142. EX CDDA_TRACK    CDDA_CLOCK_program ;    /*  プログラム用チェックポイントの合計時間    */
  143. EX CDDA_TRACK    CDDA_TIME_track[CDDA_MAX_TRACK] ;    /*  各トラックの演奏時間    */
  144. EX CDDA_TRACK    CDDA_TIME_music ;                    /*  全トラックの演奏時間    */
  145. EX CDDA_TRACK    CDDA_TIME_data ;                    /*  全データ時間            */
  146. EX CDDA_TRACK    CDDA_TIME_program ;                    /*  全プログラム時間        */
  147. EX CDDA_TRACK    CDDA_TIME_program2 ;                /*  プログラム未選択時間    */
  148. EX CDDA_TRACK    CDDA_CLOCK_start ;                    /*  演奏開始指定時間    */
  149. EX CDDA_TRACK    CDDA_CLOCK_end ;                    /*  演奏終了指定時間    */
  150. EX CDDA_TRACK    CDDA_CLOCK_pause ;                    /*  一時停止時の時間    */
  151.  
  152. EX int        CDDA_NOW_status ;            /*  現在のCD演奏状態                */
  153. EX int        CDDA_NOW_musicno ;            /*  現在演奏中の曲番号                */
  154. EX int        CDDA_NOW_start ;            /*  演奏開始曲番号                    */
  155. EX int        CDDA_NOW_end ;                /*  演奏終了曲番号                    */
  156. EX int        CDDA_NOW_pause ;            /*  一時停止時の曲番号                */
  157.  
  158. EX int        CDDA_TOTAL_program ;        /*  プログラム登録曲数                    */
  159. EX int        CDDA_COUNT_program ;        /*  プログラム確認時何曲目                */
  160. EX int        CDDA_REMAIN_program ;        /*  プログラム残り演奏曲数                */
  161.  
  162. /*---------------------------------------------------------------------------*/
  163. /*
  164. **    関数プロトタイプ宣言
  165. */
  166. /*---------------------------------------------------------------------------*/
  167.  
  168. /*
  169. **    CDDA.C
  170. */
  171. void CDDA_music_clear( void ) ;
  172. void CDDA_libinit( void ) ;
  173. int CDDA_cdinfo( void ) ;
  174. int CDDA_tocread( void ) ;
  175. int CDDA_seek( void ) ;
  176. int CDDA_mtrplay( void ) ;
  177. void CDDA_stop( void ) ;
  178. int CDDA_mphase( void ) ;
  179. int CDDA_shuffle_check( void ) ;
  180. void CDDA_program_playend( void ) ;
  181. int CDDA_program_check( void ) ;
  182. int CDDA_continue_check( int ) ;
  183. int CDDA_single_check( int ) ;
  184. int CDDA_play_check( void ) ;
  185. void CDDA_nplay_check( void ) ;
  186. int CDDA_get_status( void ) ;
  187. int CDDA_status( void ) ;
  188. int CDDA_timeplay( void ) ;
  189. int CDDA_play( void ) ;
  190. int CDDA_pause( void ) ;
  191. void CDDA_shuffle_init( void ) ;
  192. int CDDA_shuffle( int * ) ;
  193. int CDDA_program_data_check( void ) ;
  194. int CDDA_program_data_clear( void ) ;
  195. int CDDA_program_data_add( int ) ;
  196. int CDDA_swinit( void ) ;
  197. void CDDA_select_stop( int ) ;
  198. int CDDA_select_music( int ) ;
  199. void CDDA_select_mode( int ) ;
  200. int CDDA_select_play( void ) ;
  201. int CDDA_select_shuffle( void ) ;
  202. int CDDA_select_program( int ) ;
  203. void CDDA_initstatus( void ) ;
  204. int CDDA_switch( int ) ;
  205. int CDDA_get_playmode( void ) ;
  206. void CDDA_debug_dispmsg( int ) ;
  207.  
  208. /*
  209. **    CDTIME.C
  210. */
  211. int    CDDA_cmptime( signed char,signed char,signed char,signed char,signed char,signed char ) ;
  212. void CDDA_subtime( char,char,char,char,char,char,char *,char *,char * ) ;
  213. void CDDA_addtime( char,char,char,char,char,char,char *,char *,char * ) ;
  214. void CDDA_set_time_start( int ) ;
  215. void CDDA_set_time_end( int ) ;
  216. void CDDA_timecalc( void ) ;
  217. void CDDA_remaintime( void ) ;
  218. void CDDA_program_remaintime( void ) ;
  219. int CDDA_data_check( int ) ;
  220. int CDDA_next_music( void ) ;
  221. int CDDA_before_music( void ) ;
  222. int CDDA_fftime( void ) ;
  223. int CDDA_rewtime( void ) ;
  224. int CDDA_ffmusic( void ) ;
  225. int CDDA_rewmusic( void ) ;
  226.  
  227. #undef    EX
  228.